home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / games.arc / SIDEREAL.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  3.8 KB  |  137 lines

  1. 10  ' **********************
  2. 20  ' **     SIDEREAL     **
  3. 30  ' **********************
  4. 40  '
  5. 50  CLEAR
  6. 60  SCREEN 0,0,0
  7. 70  WIDTH 80
  8. 80  CLS
  9. 90  KEY OFF
  10. 100  PRINT "Current date is ";DATE$
  11. 110  INPUT "Enter a different date if desired ... ";Q$
  12. 120  IF Q$ <> "" THEN DATE$ = Q$
  13. 130  CLS
  14. 140  PRINT "Current time is approximately ";TIME$
  15. 150  INPUT "Enter a different time if desired ... ";Q$
  16. 160  IF Q$ <> "" THEN TIME$ = Q$
  17. 170  CLS
  18. 180  INPUT "What is your west longitude ";LONGITUDE
  19. 190  CLS
  20. 200  PRINT "Time zone offsets ...  (Standard) (Daylight savings)"
  21. 210  PRINT
  22. 220  PRINT "     Eastern              5          6"
  23. 230  PRINT "     Central              6          7"
  24. 240  PRINT "     Mountain             7          8"
  25. 250  PRINT "     Pacific              8          9"
  26. 260  PRINT
  27. 270  INPUT "What is your time zone difference from Greenwhich ";TIMEZONE
  28. 280  SCREEN 1
  29. 290  SIZE = 32
  30. 300  DIM D0(SIZE),D1(SIZE),D2(SIZE),D3(SIZE),D4(SIZE)
  31. 310  DIM D5(SIZE),D6(SIZE),D7(SIZE),D8(SIZE),D9(SIZE),DC(SIZE)
  32. 320  DIM HEADING(555)
  33. 330  LOCATE 1,1
  34. 340  PRINT "LOCAL MEAN SIDEREAL TIME"
  35. 350  GET (0,0)-(192,6),HEADING
  36. 360  CLS
  37. 370  FOR I = 0 TO 10
  38. 380  LINE (20,20)-(41,47),0,BF
  39. 390  LOCATE 1,1
  40. 400  IF I < 10 THEN PRINT CHR$(48 + I); ELSE PRINT ":";
  41. 410  FOR ROW = 0 TO 8
  42. 420  FOR COL = 0 TO 6
  43. 430  IF POINT(COL,ROW) THEN LINE (COL*3+20,ROW*3+20)-(COL*3+22,ROW*3+22),1,BF
  44. 440  NEXT COL,ROW
  45. 450  IF I = 0 THEN GET (20,20)-(40,40),D0
  46. 460  IF I = 1 THEN GET (20,20)-(40,40),D1
  47. 470  IF I = 2 THEN GET (20,20)-(40,40),D2
  48. 480  IF I = 3 THEN GET (20,20)-(40,40),D3
  49. 490  IF I = 4 THEN GET (20,20)-(40,40),D4
  50. 500  IF I = 5 THEN GET (20,20)-(40,40),D5
  51. 510  IF I = 6 THEN GET (20,20)-(40,40),D6
  52. 520  IF I = 7 THEN GET (20,20)-(40,40),D7
  53. 530  IF I = 8 THEN GET (20,20)-(40,40),D8
  54. 540  IF I = 9 THEN GET (20,20)-(40,40),D9
  55. 550  IF I = 10 THEN GET (20,20)-(40,40),DC
  56. 560  NEXT I
  57. 570  CLS
  58. 580  SCREEN 2
  59. 590  'LINE (0,0)-(639,199),,B
  60. 600  LINE (10,5)-(629,194),,B
  61. 610  LINE (2,30)-(637,35),,B
  62. 620  LINE (0,32)-(639,32),0
  63. 630  PAINT (1,1)
  64. 640  PUT (127,15),HEADING
  65. 650  '
  66. 660  WHILE NOT THE.END.OF.THE.WORLD
  67. 670  WHILE T$ = TIME$
  68. 680  WEND
  69. 690  T$ = TIME$
  70. 700  GOSUB 1030
  71. 710  GOSUB 1090
  72. 720  GOSUB 1170
  73. 730  X = 100
  74. 740  Y = 77
  75. 750  GOSUB 850
  76. 760  LOCATE 17,27
  77. 770  PRINT "Clock time ...  ";T$;
  78. 780  LOCATE 19,27
  79. 790  PRINT USING "Longitude  ...  ###.###";LONGITUDE;
  80. 800  LOCATE 21,27
  81. 810  PRINT "Date       ...  ";DATE$;
  82. 820  WEND
  83. 830  '
  84. 840  ' Subroutine, SIDEREAL$ to screen at X,Y in large characters
  85. 850  FOR CHAR = 1 TO LEN(SIDEREAL$)
  86. 860  CHAR$ = MID$(SIDEREAL$,CHAR,1)
  87. 870  IF CHAR$ = "0" THEN PUT (X,Y),D0,PSET
  88. 880  IF CHAR$ = "1" THEN PUT (X,Y),D1,PSET
  89. 890  IF CHAR$ = "2" THEN PUT (X,Y),D2,PSET
  90. 900  IF CHAR$ = "3" THEN PUT (X,Y),D3,PSET
  91. 910  IF CHAR$ = "4" THEN PUT (X,Y),D4,PSET
  92. 920  IF CHAR$ = "5" THEN PUT (X,Y),D5,PSET
  93. 930  IF CHAR$ = "6" THEN PUT (X,Y),D6,PSET
  94. 940  IF CHAR$ = "7" THEN PUT (X,Y),D7,PSET
  95. 950  IF CHAR$ = "8" THEN PUT (X,Y),D8,PSET
  96. 960  IF CHAR$ = "9" THEN PUT (X,Y),D9,PSET
  97. 970  IF CHAR$ = ":" THEN PUT (X,Y),DC,PSET
  98. 980  X = X + 55
  99. 990  NEXT CHAR
  100. 1000  RETURN
  101. 1010  '
  102. 1020  ' Subroutine, TIME$ into HOUR,MINUTE,SECOND
  103. 1030  HOUR = VAL(LEFT$(TIME$,2))
  104. 1040  MINUTE = VAL(MID$(TIME$,4))
  105. 1050  SECOND = VAL(RIGHT$(TIME$,2))
  106. 1060  RETURN
  107. 1070  '
  108. 1080  ' Subroutine, DATE$ into MONTH,DAY,YEAR
  109. 1090  MONTH = VAL(LEFT$(DATE$,2))
  110. 1100  DAY = VAL(MID$(DATE$,4))
  111. 1110  YEAR = VAL(RIGHT$(DATE$,2))
  112. 1120  RETURN
  113. 1130  '
  114. 1140  ' Subroutine  HOUR,MINUTE,SECOND,
  115. 1150  '             MONTH,DAY,YEAR,
  116. 1160  '             TIMEZONE,LONGITUDE  converted to SIDEREAL$
  117. 1170  T1 = INT(DAY - 30 + 275 * MONTH / 9)
  118. 1180  IF MONTH < 3 THEN 1210
  119. 1190  T1 = T1 - 1
  120. 1200  IF YEAR MOD 4 THEN T1 = T1 - 1
  121. 1210  T2 = TIMEZONE + HOUR + MINUTE / 60 + SECOND / 3600
  122. 1220  T3 = (INT(T1 + 365.25 * YEAR - 0.25) - 0.5) / 36525
  123. 1230  T4 = 23925.8 + 8.64018E+06 * T3 + 0.0929 * T3 * T3
  124. 1240  SIDER = 360 * T4 / 86400 + 15.0411 * T2 - LONGITUDE
  125. 1250  SIDER = (SIDER - 360 * INT(SIDER / 360)) * 24 / 360
  126. 1260  SHOUR = INT(SIDER)
  127. 1270  SMINUTE = INT(60 * (SIDER - SHOUR))
  128. 1280  SSECOND = INT(3600 * SIDER - 3600 * SHOUR - 60 * SMINUTE)
  129. 1290  SIDEREAL$ = MID$(STR$(SHOUR),1-(SHOUR>9)) + ":"
  130. 1300  SIDEREAL$ = SIDEREAL$ + MID$(STR$(SMINUTE),1-(SMINUTE>9)) + ":"
  131. 1310  SIDEREAL$ = SIDEREAL$ + MID$(STR$(SSECOND),1-(SSECOND>9))
  132. 1320  SP = INSTR(SIDEREAL$," ")
  133. 1330  IF SP = 0 THEN 1360
  134. 1340  MID$(SIDEREAL$,SP,1) = "0"
  135. 1350  GOTO 1320
  136. 1360  RETURN
  137.